import pdfplumber
import os
import re

def clean_text(text):
    """清理文本，移除多余的空格和换行"""
    # 移除多余的空格
    text = re.sub(r'\s+', ' ', text)
    # 移除多余的空行
    text = re.sub(r'\n\s*\n', '\n\n', text)
    return text.strip()

def pdf_to_markdown(pdf_path, output_path=None):
    """
    将 PDF 文件转换为 Markdown 格式
    
    Args:
        pdf_path: PDF 文件路径
        output_path: 输出 Markdown 文件路径，如果为 None 则使用 PDF 文件名
    """
    if not os.path.exists(pdf_path):
        print(f"错误：文件 {pdf_path} 不存在")
        return
    
    if output_path is None:
        output_path = os.path.splitext(pdf_path)[0] + '.md'
    
    try:
        with pdfplumber.open(pdf_path) as pdf:
            markdown_content = []
            
            for page in pdf.pages:
                # 提取文本
                text = page.extract_text()
                if text:
                    # 清理文本
                    cleaned_text = clean_text(text)
                    markdown_content.append(cleaned_text)
            
            # 将所有内容写入 Markdown 文件
            with open(output_path, 'w', encoding='utf-8') as f:
                f.write('\n\n'.join(markdown_content))
            
            print(f"转换完成！Markdown 文件已保存至：{output_path}")
    
    except Exception as e:
        print(f"转换过程中出现错误：{str(e)}")

if __name__ == "__main__":
    import argparse
    
    parser = argparse.ArgumentParser(description='将 PDF 文件转换为 Markdown 格式')
    parser.add_argument('pdf_path', help='PDF 文件路径')
    parser.add_argument('-o', '--output', help='输出 Markdown 文件路径（可选）')
    
    args = parser.parse_args()
    pdf_to_markdown(args.pdf_path, args.output) 